// 试写vue3中的ref函数
interface Def {
  value: any
}
function ref<T>(param: T) {
  const obj: Def = { value: null };
  obj.value = param;
  return new Proxy(obj, {
    get: function(target, key, receiver) {
      console.log(key);
      return Reflect.get(target, key, receiver);
    },
    set: function(target, key, value, receiver) {
      console.log(key); // 触发了set就会打印
      return Reflect.set(target, key, value, receiver);
    }
  })
};
const statux = ref<boolean>(false);
statux.value = true;
console.log(statux);

// 以此类推的话，那么可以学到watch
// 以及watch监听到了变化后，是怎么告诉vm 进而执行视图刷新的
// 还能顺带学习watchEffect
// watch源码
// 还能顺着这条路线整理出脑图
// 还能顺带反思reactive